package de.dpunkt.myaktion.model;

//import java.security.MessageDigest;
//import java.util.List;
//
//import javax.persistence.CascadeType;
//import javax.persistence.Embedded;
//import javax.persistence.Entity;
//import javax.persistence.EntityListeners;
//import javax.persistence.GeneratedValue;
//import javax.persistence.GenerationType;
//import javax.persistence.Id;
//import javax.persistence.NamedQueries;
//import javax.persistence.NamedQuery;
//import javax.persistence.OneToMany;
//import javax.persistence.Version;
//import javax.validation.constraints.NotNull;
//import javax.validation.constraints.Pattern;
//import javax.validation.constraints.Size;
//
//import org.apache.commons.codec.binary.Hex;
//
//import de.gzie.myaktion.model.metainfo.EntityMetaInfo;
//import de.gzie.myaktion.model.metainfo.EntityMetaInfoListener;
//
//@Entity
//@NamedQueries({
//@NamedQuery(name=Organisator.findAll, query="SELECT o FROM Organisator o"),
//@NamedQuery(name=Organisator.findByEmail, query="SELECT o FROM Organisator o WHERE o.email = :email"),
//@NamedQuery(name=Organisator.isUniqueEMail, query="SELECT COUNT(o.email) FROM Organisator o WHERE o.email = :email")
//})
//@EntityListeners(EntityMetaInfoListener.class)
//public class Organisator {
//
//	public static final String findAll = "Organisator.findAll";
//	public static final String findByEmail = "Organisator.findByEmail";
//	public static final String isUniqueEMail = "Organisator.isUniqueEMail";
//	
//	@Id
//	//@GeneratedValue
//	@GeneratedValue(strategy=GenerationType.SEQUENCE)
//	private Long id;
//	
//	@Version
//	private Long version;
//	
//	@NotNull
//	//@Column(unique=true)
//	@Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\."
//	        +"[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@"
//	        +"(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?",
//	             message="{Organisator.email.Pattern}")	
//	//@UniqueValue(columnName="email", namedQuery=Organisator.isUniqueEMail, emJndiName=Resources.ENTITY_MANAGER_JNDI_NAME, message="{Organisator.email.UniqueValue}")
//	private String email;
//	
//	@NotNull
//	@Size(min=3, max=20, message="{Organisator.vorname.Size}")
//	private String vorname;
//	
//	@NotNull
//	@Size(min=3, max=30, message="{Organisator.nachname.Size}")
//	private String nachname;
//	
//	@NotNull
//	private String passwortHash;
//	
//	@NotNull
//	private String gruppe;
//	
//	@NotNull
//	@Embedded
//	private EntityMetaInfo entityMetaInfo;
//	
//	@OneToMany(mappedBy = "organisator", cascade = CascadeType.REMOVE)
//	private List<Aktion> aktionen;
//
//	public Organisator() {
//		entityMetaInfo = new EntityMetaInfo();
//	}
//	
//	public Long getId() {
//		return id;
//	}
//	
//	public void setId(Long id) {
//		this.id = id;
//	}
//	
//	public Long getVersion() {
//		return version;
//	}
//	
//	protected void setVersion(Long version) {
//		this.version = version;
//	}
//
//	public String getEmail() {
//		return email;
//	}
//	
//	public void setEmail(String email) {
//		this.email = email;
//	}
//	
//	public String getVorname() {
//		return vorname;
//	}
//	
//	public void setVorname(String vorname) {
//		this.vorname = vorname;
//	}
//	
//	public String getNachname() {
//		return nachname;
//	}
//	
//	public void setNachname(String nachname) {
//		this.nachname = nachname;
//	}
//	
//	public String getPasswort() {
//		return "*****";
//	}
//	
//	public void setGruppe(String gruppe) {
//		this.gruppe = gruppe;
//	}
//	
//	public String getGruppe() {
//		return gruppe;
//	}
//
//	public void setPasswort(String passwort) throws Exception {
//		MessageDigest md = MessageDigest.getInstance("SHA-256");
//		md.update(passwort.getBytes("UTF-8"));
//		passwortHash = Hex.encodeHexString(md.digest());
//	}
//	
//	public List<Aktion> getAktionenn() {
//		return aktionen;
//	}
//	
//	public void setAktionen(List<Aktion> aktionen) {
//		this.aktionen = aktionen;
//	}
//	
//	public EntityMetaInfo getEntityMetaInfo() {
//		return entityMetaInfo;
//	}
//
//	@Override
//	public int hashCode() {
//		final int prime = 31;
//		int result = 1;
//		result = prime * result + ((email == null) ? 0 : email.hashCode());
//		return result;
//	}
//
//	@Override
//	public boolean equals(Object obj) {
//		if (this == obj)
//			return true;
//		if (obj == null)
//			return false;
//		if (getClass() != obj.getClass())
//			return false;
//		Organisator other = (Organisator) obj;
//		if (email == null) {
//			if (other.email != null)
//				return false;
//		} else if (!email.equals(other.email))
//			return false;
//		return true;
//	}
//
//	@Override
//	public String toString() {
//		return "Organisator [" + (email != null ? "email=" + email + ", " : "")
//				+ (vorname != null ? "vorname=" + vorname + ", " : "")
//				+ (nachname != null ? "nachname=" + nachname : "") + "]";
//	}
//}
